package com.xuanzheng.company.service;

import com.xuanzheng.company.entity.SystemApplication;
import java.util.List;

public interface SystemApplicationService {
    /**
     * 提交系统使用申请
     * @param application 系统使用申请对象
     * @return 是否提交成功
     */
    boolean submitApplication(SystemApplication application);
    
    /**
     * 审核系统使用申请
     * @param id 申请ID
     * @param status 新状态
     * @param rejectReason 拒绝原因（如果拒绝）
     * @return 是否审核成功
     */
    boolean reviewApplication(String id, int status, String rejectReason);
    
    /**
     * 获取用户最新的系统使用申请
     * @param userId 用户ID
     * @return 系统使用申请对象
     */
    SystemApplication getUserLatestApplication(String userId);
    
    /**
     * 获取用户的系统使用权限状态
     * @param userId 用户ID
     * @return 权限状态：-1=未申请, 0=审核中, 1=已通过, 2=已拒绝
     */
    int getUserApplicationStatus(String userId);
    
    /**
     * 获取所有系统使用申请
     * @return 系统使用申请列表
     */
    List<SystemApplication> getAllApplications();
    
    /**
     * 根据状态获取系统使用申请
     * @param status 状态
     * @return 系统使用申请列表
     */
    List<SystemApplication> getApplicationsByStatus(int status);
    
    /**
     * 搜索系统使用申请
     * @param keyword 搜索关键词
     * @return 系统使用申请列表
     */
    List<SystemApplication> searchApplications(String keyword);
    
    /**
     * 根据状态搜索系统使用申请
     * @param status 状态
     * @param keyword 搜索关键词
     * @return 系统使用申请列表
     */
    List<SystemApplication> searchApplicationsWithStatus(int status, String keyword);
} 